//
//  IFAAManager.h
//  esand_cloud_ifaa
//
//  Created by ReidLee on 2018/2/7.
//  Copyright © 2018年 esandinfo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "IFAABaseInfo.h"
#import "IFAACommon.h"
#import "IFAAResult.h"

extern NSString * g_ifaaMsg;
extern NSString * g_logID;

/**
 * IFAA管理类
 */
@interface IFAAManager:NSObject

/**
 * SimpleIFAA认证
 * @param reasonTitle 指纹弹出框的reasonTitle
 * @param fallbackTitle 指纹弹出框的 fallbackTitle
 * @param ifaaCallback 结果回调函数 `typedef void (^IFAACallback)(IFAAResult* ifaaResult);`
 **/
+ (void) sAuth: (NSString*) reasonTitle fallbackTitle: (NSString*) fallbackTitle ifaaCallback:(IFAACallback) ifaaCallback;
/**
* SimpleIFAA认证
* @param IFAABaseInfo IFAA认证所必须的信息
* @param ifaaCallback 结果回调函数 `typedef void (^IFAACallback)(IFAAResult* ifaaResult);`
**/
+ (void) sAuth: (IFAABaseInfo*) baseInfo ifaaCallback:(IFAACallback) ifaaCallback;
/**
 *对象初始化
 *@param authType 认证类型
 *@param reasonTitle 指纹弹出框对的 "reasonTitle"
 *@param fallbackTitle 指纹弹出框对的 "fallbackTitle"
 *@param ifaaAction ifaa流程
 *@return selfe of `IFAAManager`
 */

- (id)initWithAuthType: (int) authType andReasonTitle: (NSString*) reasonTitle fallbackTitle: (NSString*) fallbackTitle ifaaAction:(IFAAProcessAction) ifaaAction;

/*
 * 初始化函数
 */
- (id)initWithIFAABaseInfo: (IFAABaseInfo * )baseInfo;

/**
 *对象初始化 电信SDK入口
 *@param authType 认证类型
 *@param reasonTitle 指纹弹出框对的 "reasonTitle"
 *@return selfe of `IFAAManager`
 */
- (id)initWithAuthType: (int) authType andReasonTitle: (NSString*) reasonTitle;

/**
 ***检查本机是否支持ifaa, 支持那种ifaa认证***

 - returns: ‘IFAAErrorCodeEnum’ 有可能返回如下状态码
     <table border="1">
         <tr>
             <th>可能的状态码</th>
             <th>内容</th>
             <th>备注</th>
         </tr>
         <tr>
             <td>"1"</td>
             <td>本机不支持ifaa</td>
             <td></td>
         </tr>
         <tr>
             <td>"2"</td>
             <td>本机支持ifaa, 认证类型是指纹</td>
             <td></td>
         </tr>
         <tr>
             <td>"3"</td>
             <td>本机支持ifaa, 认证类型是本地人脸</td>
             <td></td>
         </tr>
     </table>
 */
+ (NSString *)isSupportIFAA;

/**
 ***检查App是否有面容ID的权限***
 - returns: ‘bool’
 <table border="1">
     <tr>
         <th>可能的返回值</th>
         <th>内容</th>
         <th>备注</th>
     </tr>
     <tr>
         <td>YES</td>
         <td>App拥有面容ID的使用权限或者用户还没有决定面容ID的允许拒绝</td>
         <td></td>
     </tr>
     <tr>
         <td>NO</td>
         <td>用户拒绝App使用面容ID的权限</td>
         <td></td>
     </tr>
 </table>
 */
+ (bool)hasPermissionForFaceID;

/**
 ***获取SDK的版本号***

 - returns: SDK 的版本号
 */
+ (NSString *)getVersion;

/**
 * 获取生物认证状态
 *
 * @return 可能的返回值如下：
 * 1 ： 此设备不支持生物认证(ios 8.0 一下版本)
 * 2 ：屏幕锁未设置(需要引导用户设置屏幕锁才可用生物认证)
 * 3 ：未录入指纹或人脸(需要引导用户录入指纹/人脸)
 * 4 ：本地尚未注册
 * 5 : 生物认证不可用(系统异常)
 */
- (int) getLocalStatus;
/**
 *  获取指纹集ID
 */
+ (NSString *)getLocalFpSetId;

/**
 *  检查IFAA执行环境, 可能返回的值如下：
 *  IFAA_STATUS_NOT_SUPPORT：当前设备不支持IFAA (IOS8.0以下？)
 *  IFAA_STATUS_FINGERPRINT: 支持指纹，并且可用
 *  IFAA_STATUS_FACE_ID：支持faceid, 并且可用
 *  IFAA_PERMISSION_DENIED：支持FACEID, 但是尚未获得相机权限
 *  IFAA_STATUS_PASSCODE_NOT_SET：屏幕密码尚未设置，请引导用户设置屏幕密码后再试
 *  IFAA_STATUS_NOT_ENROLLED: 尚未录入指纹/人脸，引导用户录入指纹/人脸后再试
 *  IFAA_NOT_AVAILABLE：指纹/faceid 当前不可用
 */
+ (NSString *) checkIfaaEnv;

@end
